var Person = function() {
	//회원 정보 저장하는 로컬 클래스
	// console.log('person create');
	isCheckName = false;
	//이름 중복체크
	isCheckID = false;
	//아이디 중복체크
	isCheckNic = false;
	//닉네임 중복체크
	isGetCode = "N";
	//인증코드 받았는가 
	isGoodPhoneCode=false;
	//인증 코드가 유효한가
	responseSeq=null;
	//핸드폰 인증 고유 인증번호
	isCheckMail = false
	//메일 중복체크 했는가
	golfName = null;
	//이름
	golfID = null;
	//아이디
	golfNic = null;
	//닉네임
	golfPhone = null;
	//폰번호
	golfMail = null;
	//메일주소
	golfPass = null;
	//비밀번호
	golfLevel = "A";
	//유저 레벨
	isArrowSendMail = "N";
	//이메일 수신
	gender = null;
	//성별
	isJoinRoomInvite = null;
	//조인룸 초대
}
Person.prototype = {
	init : function() {
		console.log('person init');
	}
}

var Member_Join_01 = function() {
};
Member_Join_01.prototype = {
	constructor : Member_Join_01,
	userJoin : function() {
		//회원가입 함수
		var mj = new MJson();
		var cm = new ConnectionManager();

		mj.putPub(MJson.PUB.SID, "US001");
		mj.putPub(MJson.PUB.SERVICENAME, "insert");

		mj.putParameter(MJson.PARAMETER.USERID, person.golfID);
		mj.putParameter(MJson.PARAMETER.PW, person.golfPass);
		mj.putParameter(MJson.PARAMETER.EMAIL, person.golfMail);
		mj.putParameter(MJson.PARAMETER.PHONENUM, person.golfPhone);
		mj.putParameter(MJson.PARAMETER.NICKNAME2, person.golfNic);
		mj.putParameter(MJson.PARAMETER.USERTYPE, "1");
		mj.putParameter(MJson.PARAMETER.SEX, person.gender);
		mj.putParameter(MJson.PARAMETER.EMAILRECEIVEYN, "N");
		mj.putParameter(MJson.PARAMETER.AUTHYN, person.isGetCode);
		mj.putParameter(MJson.PARAMETER.USERLEVEL, "A");
		mj.putParameter(MJson.PARAMETER.USERNAME, person.golfName);
		mj.putParameter("inviteReceiveYn", person.isJoinRoomInvite);

		cm.requestGet(mj.getJsonString(), function(jsonData) {
			console.log("success :: " + JSON.stringify(jsonData));
			if (mj.checkServiceResult(jsonData)) {
				//alert('회원가입 성공');
				document.globalObj.LOGIN_DATA.userId = person.golfID;
				document.globalObj.LOGIN_DATA.userName = person.golfName;

				$.mobile.changePage("join_02.html");
			} else {
				alert('회원가입 실패 ERROR');
			}
		}, function(e) {
			console.log("error :: " + JSON.stringify(e));
		});
	},
	onPageShow : function() {
		$('a').attr('href', "");
		var join01 = this;
		checkName = $("#checkName");
		//이름 중복체크 버튼
		nameInput = $("#nameInput");
		//이름 인풋박스
		checkID = $("#checkID");
		//아이디 중복체크 버튼
		IDInput = $("#IDInput");
		//아이디 인풋박스
		checkNic = $("#checkNic");
		//닉네임 버튼
		nicInput = $("#nicInput");
		//닉네임 인풋박스
		originalPass = $("#originalPass");
		//패스워드 인풋박스
		checkPass = $("#checkPass");
		//패스워드 확인 인풋박스
		getCode = $("#getCode");
		//인증번호 버튼
		phoneOption = $("#phoneOption");
		//통신사 옵션버튼
		phoneHead = $("#phoneHead");
		//폰번호 앞자리
		phoneBody = $("#phoneBody");
		//폰번호 중간자리
		phoneFoot = $("#phoneFoot");
		//폰번호 뒷자리
		checkMail = $("#checkMail");
		// 이메일 중복체크버튼
		mailAddress = $("#mailAddress");
		//이메일 주소
		mailCompany = $("#mailCompany");
		//이메일 호스트 주소
		mailOption = $("#mailOption");
		//이메일 호스트 옵션 버튼
		mailCheckbox = $("input#a1");
		//이메일 수신버튼
		id_ok = $("#id_ok");
		//사용가능한 아이디 div
		id_no = $("#id_no");
		//사용불가능한 아이디 div
		nic_ok = $("#nic_ok");
		//사용가능 닉네임  div
		nic_no = $("#nic_no");
		//사용불가능 닉네임 div

		/*div 요소 숨김*/
		id_ok.hide();
		id_no.hide();
		nic_ok.hide();
		nic_no.hide();

		checkAll = $("#checkAll");
		//전체확인버튼
		cancelAll = $("#cancelAll");
		//전체 취소버튼

		re_id1 = /^.{4,12}$/;
		re_id2 = /[A-Za-z0-9]$/;
		// 아이디 검사식
		re_nic = /^[a-zA-Z0-9가-힣_-]{2,6}$/;
		// 닉네임검사식
		re_pw = /^[a-zA-Z0-9_-]{4,12}$/;
		// 비밀번호 검사식
		re_mail = /^([\w\.-]+)@([a-z\d\.-]+)\.([a-z\.]{2,6})$/;
		// 이메일 검사식

		person = new Person();

		person.init();
		console.log("1::" + this);
		//필드값이 바뀔때 마다 중복 체크 확인 변수를 false로 변경
		$(nameInput).change(function() {
			person.isCheckName = false;
		});
		//실명인증 버튼 클릭 함수
		$(checkName).click(function() {
			if (nameInput.val().length == 0) {// 이름 유효성 검사
				//alert("이름을 입력해 주세요.");
				//var pop = new Popup();
				//pop.confirm("골프인", "￼실명 인증 \n 서비스 준비중 입니다. :: 1", "확인");
				alert("이름을 입력해 주세요.");
				nameInput.focus();
				return;
			}
			// var pop = new Popup();
			// pop.confirm("골프인", "￼실명 인증 \n 서비스 준비중 입니다.", "확인", function(index) {
			// //TODO 결제용 테스트 경고창
			// //$.mobile.changePage('join_01.html');
			// });
			alert("실명 인증 \n 서비스 준비중 입니다.");
			getCheckName(nameInput.val());
		});
		//필드값이 바뀔때 마다 중복 체크 확인 변수를 false로 변경
		$(IDInput).change(function() {
			person.golfID = $(IDInput).val();
			person.isCheckID = false;
		})
		//아이디중복 버튼 클릭 함수
		$(checkID).click(function() {
			id_no.hide();
			id_ok.hide();
			if (IDInput.val().length == 0) {
				alert("아이디를 입력해주세요");
				IDInput.focus();
				return;
			}else if (re_id1.test(IDInput.val()) != true) {// 아이디 유효성 검사
				alert("아이디는 4~12자리 입력하여 주십시요.");
				IDInput.focus();
				return;
			}else if (re_id2.test(IDInput.val()) != true) {// 아이디 유효성 검사
				alert("아이디는 영문 또는 숫자 조합으로 입력하여 주십시요.");
				IDInput.focus();
				return;
			}

			// var pop = new Popup();
			// pop.confirm("골프인", "사용 가능한 아이디 입니다.", "확인", function(index) {
			// //TODO 결제용 테스트 경고창
			// $.mobile.changePage('join_01.html');
			// });
			
			checkExistID(IDInput.val());
		});
		//필드값이 바뀔때 마다 중복 체크 확인 변수를 false로 변경
		$(nicInput).change(function() {
			person.isCheckNic = false;
		})
		//닉네임 중복 버튼 클릭 함수
		$(checkNic).click(function() {
			if (nicInput.val().length == 0) {
				alert("닉네임을 입력해주세요.");
				nicInput.focus();
				return;
			}
			if (re_nic.test(nicInput.val()) != true) {// 닉네임 유효성 검사
				alert("닉네임은 2~6 이하만 가능합니다.");
				nicInput.focus();
				return;
			}
			alert("사용 가능한 닉네임 입니다.");
			checkExistNic(nicInput.val());
		});
		$(phoneFoot).change(function() {
			isGetCode = "N";
			console.log(isGetCode);
		})
		$(phoneBody).change(function() {
			isGetCode = "N";
			console.log(isGetCode);
		})
		//인증코드 받기 버튼 클릭 함수
		$(getCode).click(function() {
			console.log('getCode');
			if (($(phoneBody).val().length >= 3 && $(phoneBody).val().length <= 4) && $(phoneFoot).val().length == 4) {
				person.golfPhone = $(phoneHead).val() + "-" + $(phoneBody).val() + "-" + $(phoneFoot).val();
				getCodeNumber($(phoneOption).val(), person.golfPhone);
				  
			} else { 
				alert("휴대폰 번호를 정확히 입력해 주세요.");
			}
		});
		//이메일 호스트 옵션 버튼
		$(mailOption).change(function() {
			$(mailCompany).val(mailOption.val());
		});
		//이메일 주소 중복 확인 버튼
		$("#checkMail").click(function() {
			console.log('aaa');
			person.golfMail = $(mailAddress).val() + "@" + $(mailCompany).val();
			if (re_mail.test(person.golfMail) != true) { 

				alert("정상적인 이메일주소가 아닙니다.");
				return;
			}
			checkMailAddress(person.golfMail);
		});
		//이메일 정보 수신 체크박스
		$(mailCheckbox).bind("click", function(event) {
			if (person.isArrowSendMail == "N") {
				person.isArrowSendMail = "Y"
			} else {
				person.isArrowSendMail = "N"
			}
		});

		//남자 여자 선택 라디오 버튼
		$("input#b1").on("change", function(event) {
			person.gender = "M";
			console.log(person.gender);
		});
		//남자 여자 선택 라디오 버튼
		$("input#b2").on("change", function(event) {
			person.gender = "F";
			console.log(person.gender);
		});
		//조인룸 선택 라디오 버튼
		$("input#c1").on("change", function(event) {
			person.isJoinRoomInvite = "Y";
			console.log(person.isJoinRoomInvite);
		});
		//조인룸 선택 라디오 버튼
		$("input#c2").on("change", function(event) {
			person.isJoinRoomInvite = "N";
			console.log(person.isJoinRoomInvite);
		});

		//-----------확인버튼-------------------//
		//확인버튼
		$(checkAll).click(function() {

			if (!person.isCheckName) {
				// var pop = new Popup();
				// pop.confirm("골프인", "￼실명 인증을 해주세요.", "확인", function(index) {
				// //TODO 결제용 테스트 경고창
				// $.mobile.changePage('join_01.html');
				// });
				alert("실명 인증을 해주세요.");
				$(checkAll).attr("href", "#");
				return;
			}
			person.golfName = nameInput.val();

			if (!person.isCheckID) { 
				alert("아이디 중복체크 해주세요.");
				$(checkAll).attr("href", "#");
				return
			}

			if (!person.isCheckNic) {
				console.log('닉네임 중복체크를 하세요'); 
				alert("닉네임 중복체크 해주세요.");
				$(checkAll).attr("href", "#");
				return;
			}
			person.golfNic = nicInput.val();

			if (re_pw.test(originalPass.val()) != true) {
				console.log('비밀번호는 4~12 이하 영문 또는 숫자만 가능 합니다.'); 
				alert("비밀번호는 4~12 이하 영문 또는 \n 숫자만 가능 합니다.");
				$(checkAll).attr("href", "#");
				return;
			}
			if (originalPass.val() != checkPass.val()) {
				console.log('비밀번호가 일치하지 않습니다.'); 
				alert("입력된 비밀번호와 일치하지 않습니다.");
				$(checkAll).attr("href", "#");
				return;
			}
			person.golfPass = originalPass.val();
			console.log("원본 비밀번호 :: " + originalPass.val() + "확인 비밀번호 :: " + checkPass.val());

			if (person.isGetCode == "Y") {
				console.log('휴대폰 인증 실행');
				checkCodeNumber($("#phoneCode").val());
			}else{
				alert('휴대폰 본인인증을 해주세요.[부킹] [ 조인룸] 이용이 제한 될 수 있습니다.');
				return;
			}
			
			if(person.isGoodPhoneCode == "N")
			{
				alert('유효한 인증코드를 적어주세요.');
				return;
			}
			console.log("휴대폰통신사 :: " + $(phoneOption).val());
			console.log("휴대폰 :: " + person.golfPhone);

			if (!person.isCheckMail) {
				// var pop = new Popup();
				// pop.confirm("골프인", "￼이메일 중복확인을 해주세요.", "확인", function(index) {
				// //TODO 결제용 테스트 경고창
				// $.mobile.changePage('join_01.html');
				// });
				alert("이메일 중복확인을 해주세요.");
				$(checkAll).attr("href", "#");
				$(checkAll).attr("href", "#");
				return;
			}
			console.log("이메일 :: " + person.golfMail);

			console.log("정보 수신 :: " + person.isArrowSendMail);
			if (person.gender == null) {
				// console.log("성별을 선택하세요");
				// var pop = new Popup();
				// pop.confirm("골프인", "￼성별을 선택해주세요.", "확인", function(index) {
					// //TODO 결제용 테스트 경고창
					// $.mobile.changePage('join_01.html');
				// });
				alert("성별을 선택해주세요.");
				$(checkAll).attr("href", "#");
				return;
			}
			console.log("성별 :: " + person.gender);

			if (person.isJoinRoomInvite == null) {
				console.log("조인룸 초대 수신 여부를 선택하세요");

				$(checkAll).attr("href", "#");
				return;
			}
			console.log("초대 :: " + person.isJoinRoomInvite);
			$(checkAll).attr("href", "#");
		
			join01.userJoin();
			// $(checkAll).attr("href", "join_02.html");
		});
		//취소버튼
		$(cancelAll).click(function() {
		});
		
		function getCheckName(name) {
			//실명인증
			console.log("실명인증 함수 실행 :: 이름 ::" + name);
			person.isCheckName = true;
			//이름 중복체크
		}

		function checkExistID(id) {
			//아이디 중복체크
			console.log("아이디 중복체크 실행 :: 아이디 ::" + id);
			var mj = new MJson();
			var cm = new ConnectionManager();

			mj.putPub(MJson.PUB.SID, "US001");
			mj.putPub(MJson.PUB.SERVICENAME, "checkIdDuplication");

			mj.putParameter(MJson.PARAMETER.USERID, id);
			_util.ajaxLog(mj.getJsonString());
			cm.requestGet(mj.getJsonString(), function(jsonData) {
				console.log("success :: " + JSON.stringify(jsonData));
				if (jsonData.msp.contents.serviceResult == "00000") {  
					person.isCheckID = true;
					id_ok.show();
					id_no.hide();
				} else {  
					person.isCheckID = false;
					id_ok.hide();
					id_no.show();
				}
			}, function(e) {
				console.log("error :: " + JSON.stringify(e));

			});
		}

		function checkExistNic(nic) {
			//닉네임 중복체크
			console.log("닉네임 중복체크 실행 :: 아이디 ::" + nic);

			var mj = new MJson();
			var cm = new ConnectionManager();

			mj.putPub(MJson.PUB.SID, "US001");
			mj.putPub(MJson.PUB.SERVICENAME, "checkNicknameDuplication");

			mj.putParameter(MJson.PARAMETER.USERID, nic);

			cm.requestGet(mj.getJsonString(), function(jsonData) {
				console.log("success :: " + JSON.stringify(jsonData));
				if (jsonData.msp.contents.serviceResult == "00000") {
					console.log("::닉네임 사용가능::");
					person.isCheckNic = true;
					nic_ok.show();
					nic_no.hide();
				} else {
					console.log("::닉네임 사용 불가능::");
					person.isCheckNic = false;
					nic_ok.hide();
					nic_no.show();
				}

			}, function(e) {
				console.log("error :: " + JSON.stringify(e));
			});
		}

		function getCodeNumber(option, number) {
			//인증번호 받기 함수
			console.log("통신사 :: " + option + "전화번호 :: " + number);
			//person.isGetCode = "Y" 

			var mj = new MJson();
			var cm = new ConnectionManager();

			mj.putPub(MJson.PUB.SID, "US001");
			mj.putPub(MJson.PUB.SERVICENAME, "cpMobileStep1");

			mj.putParameter("hpNum", number);
			mj.putParameter("hpComp", option);

			cm.requestGet(mj.getJsonString(), function(jsonData) {
				console.log("success :: " + JSON.stringify(jsonData));
				if (jsonData.msp.contents.serviceResult == "00000") {
					console.log('success :: 인증번호 받기 ');
					person.isGetCode = "Y"
					person.responseSeq=jsonData.msp.contents.items.responseSeq;
				} else {
					console.log('fail :: 인증번호 받기 ');
					person.isGetCode = "N" 
				}
			}, function(e) {
				console.log("error :: " + JSON.stringify(e));
			});
		}
		function checkCodeNumber(code){
			console.log('code :: '+code);
			//인증번호 확인 함수
			var mj = new MJson();
			var cm = new ConnectionManager();

			mj.putPub(MJson.PUB.SID, "US001");
			mj.putPub(MJson.PUB.SERVICENAME, "cpMobileStep2");

			mj.putParameter("authNo", code);
			mj.putParameter("requestSeq", "");
			mj.putParameter("responseSeq", person.responseSeq);

			cm.requestGet(mj.getJsonString(), function(jsonData) {
				console.log("success :: " + JSON.stringify(jsonData));
				if (jsonData.msp.contents.serviceResult == "00000") {
					console.log('success :: 인증번호 검증 ');
					person.isGoodCode= "Y";
				} else {
					console.log('fail :: 인증번호 검증 ');
					person.isGoodCode= "N";
				}
			}, function(e) {
				console.log("error :: " + JSON.stringify(e));
			});
		}
		function checkMailAddress(address) {
			//이메일 주소 중복 함수
			console.log("메일주소 :: " + address);

			var mj = new MJson();
			var cm = new ConnectionManager();

			mj.putPub(MJson.PUB.SID, "US001");
			mj.putPub(MJson.PUB.SERVICENAME, "checkEmailDuplication");

			mj.putParameter(MJson.PARAMETER.USERID, address);

			cm.requestGet(mj.getJsonString(), function(jsonData) {
				if (jsonData.msp.contents.serviceResult == "00000") {
					console.log("::이메일 사용가능::");
					alert("사용 가능한 이메일 입니다.");
					person.isCheckMail = true;
				} else {
					console.log("::이메일 사용 불가능::");
					alert("이미 존재하는 이메일 입니다.");
					person.isCheckMail = false;
				}
				console.log("success :: " + JSON.stringify(jsonData));
			}, function(e) {
				console.log("error :: " + JSON.stringify(e));

			});
		}

	},
};

